home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 025 (1987-08-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 025 (1987-08-15)(Ossowski, Stefan)(DE)(PD).adf / Demos / Linien.c < prev    next >
C/C++ Source or Header  |  1987-03-08  |  2KB  |  95 lines

  1. #define TIEFE 1
  2. #define RAND 64
  3. #define BREITE 512
  4. #define HOEHE 512
  5. #define FARBEN 2
  6.  
  7. #include <exec/types.h>
  8. #include <intuition/intuition.h>
  9.  
  10. struct IntuitionBase *IntuitionBase; 
  11. struct GfxBase *GfxBase;
  12.  
  13. #define INTUITION_REV   33  /* Versionsnummer! */
  14. #define GRAPHICS_REV    33
  15.  
  16. /* Deklaration eines vordefinierten NewScreen Datenblocks */
  17.  
  18. struct NewScreen NewScreen =
  19.   {
  20.    0,            /* linke Ecke sollte 0 sein */
  21.    0,            /* obere Ecke */
  22.    640,            /* Breite (hi-res) */
  23.    HOEHE,        /* Hoehe (Interlace) */
  24.    TIEFE,        /* Tiefe (1 bit plane) */
  25.    0, 1,        /* DetailPen und BlockPen */
  26.    HIRES|LACE,        /* Anzeige-Modi */
  27.    CUSTOMSCREEN,    /* Schirm-Typ */
  28.    NULL,        /* Font */
  29.    NULL,        /* Schirm-Titel */
  30.    NULL,        /* keine speziellen screen gadgets */
  31.    NULL,        /* keine custom bit map */
  32.   };
  33.  
  34. main()
  35. {
  36.   struct Screen *Screen;
  37.   struct NewWindow NewWindow;
  38.   struct Window *Window;    
  39.   REGISTER struct RastPort *rp;
  40.   struct IntuiMessage *Message;
  41.   LONG i;
  42.   REGISTER SHORT x,y,s; 
  43.   UBYTE z=0;
  44.  
  45.   /* Oeffnen der Library und Ueberpruefung */
  46.  
  47.   IntuitionBase = (struct IntuitionBase *)
  48.     OpenLibrary("intuition.library",INTUITION_REV);
  49.   if (IntuitionBase == NULL) exit(FALSE);
  50.  
  51.   GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", GRAPHICS_REV);
  52.   if (GfxBase == NULL) exit(FALSE);
  53.  
  54.   if ((Screen = (struct Screen *)OpenScreen(&NewScreen)) == NULL) exit(FALSE);
  55.  
  56.   /* Initialisieren der NewWindow structure fuer den OpenWindow()-Aufruf */
  57.  
  58.   NewWindow.LeftEdge = RAND;
  59.   NewWindow.TopEdge = 0;
  60.   NewWindow.Width = BREITE;
  61.   NewWindow.Height = HOEHE;
  62.   NewWindow.DetailPen = 0;
  63.   NewWindow.BlockPen = 1;
  64.   NewWindow.Title = NULL;
  65.   NewWindow.Flags = ACTIVATE|BORDERLESS;
  66.   NewWindow.IDCMPFlags = MOUSEBUTTONS;
  67.   NewWindow.Type = CUSTOMSCREEN;
  68.   NewWindow.FirstGadget = NULL;
  69.   NewWindow.CheckMark = NULL;
  70.   NewWindow.Screen = Screen;
  71.   NewWindow.BitMap = NULL;
  72.  
  73.   if (( Window = (struct Window *)OpenWindow(&NewWindow)) == NULL) exit(FALSE);
  74.  
  75.   rp=Window->RPort;    /* RastPort-Adresse */
  76.   SetDrMd(rp,COMPLEMENT);    /* Zeichenmodus */
  77.   do {
  78.     for(s=1; s<HOEHE; s++) {
  79.       for(x=0,y=0; x<=BREITE; x+=s) {
  80.       Move(rp,x,y);
  81.       Draw(rp,BREITE-x,HOEHE);
  82.       }
  83.       for(x=0,y=HOEHE; y>=0; y-=s) {
  84.       Move(rp,x,y);
  85.       Draw(rp,BREITE,HOEHE-y);
  86.       } 
  87.       Message=(struct IntuiMessage *)GetMsg(Window->UserPort);
  88.       if(Message->Class == MOUSEBUTTONS) break;
  89.     }
  90.   } while ((Message->Class) != MOUSEBUTTONS); 
  91.   CloseWindow(Window);
  92.   CloseScreen(Screen);
  93.   exit(TRUE);
  94. }
  95.